# 编写一个用户注册小程序，要求用户在控制台输入“ID”、“EMAIL地址”、“身份证号”、“姓名”。要求：
# 	ID长度不能超过8位，且只能由数字、字母、下划线组成
# 	EMAIL地址要求符合基本电子邮件格式
# 	身份证号要求符合基本格式
# 	姓名只能中文且不能超过4位
# 	以上操作均不能用正则表达式
# 验证合法后输出用户的所有信息，要求在信息中体现出性别。
import re
# ID验证
s = "用户注册小程序"
print("{0:-^20}".format(s))
in_id = input("请输入ID:")
if len(in_id) > 8:
    print("ID不能超过8位")
elif re.match('^[0-9a-zA-Z]+$', in_id[0]) and re.match('^[0-9a-zA-Z_-]+$', in_id[1:]):
    print("格式正确")
else:
    print("只能由数字、字母、下划线组成")

 # 邮箱验证
email = input("请输入email:")
if re.compile('\w*@\w*.com', email):
    print("邮箱格式正确")
else:
    print("邮箱格式错误")

# 身份证验证
def check_id_length(n):
  if len(str(n)) != 18:
    print("只支持18位身份证号查询")
    return False
  else:
    return True
def check_id_data(Id_card):
    var=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
    var_id=['1','0','x','9','8','7','6','5','4','3','2']
    n = str(Id_card)
    sum = 0
    if int(n[16])%2==0:
      gender="女"
      same=int(int(n[16])/2)
    else:
      gender="男"
      same=int((int(n[16])+1)/2)
    for i in range(0,17):
      sum += int(n[i])*var[i]
    sum %= 11
    if (var_id[sum])==str(n[17]):
      print("身份证号规则核验通过，校验码是：",var_id[sum])
      print("出生于：",n[6:10],"年",n[10:12],"月",n[12:14],"日","性别：",gender,"\n当地同性别同生日排名：",same)
      return sum
    else:
      print("出生于：",n[6:10],"年",n[10:12],"月",n[12:14],"日","性别：",gender,"\n当地同性别同生日排名：",same)
      print("但身份证号规则核验失败，校验码应为",var_id[sum],"，当前校验码是：",n[17])
      return 0


Id_card = input("请输入18位身份证号:")
if check_id_length(Id_card):
  check_id_data(Id_card)
else:
  print("请重新输入")

name = input("请输入姓名：")

